package agenda;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;


public class Agenda implements Serializable {
    private static final long serialVersionUID = 250311498900784859L;
//    private Entrada[] entradas;
    private List<Entrada> entradas;
//    private int posicionLibre = 0;
//    public static final int NUMERO_MAXIMO_ENTRADAS = 100;
//    public static final Entrada NULL = new Persona("No valido", "", "");
    
    public Agenda() {
	super();
//	entradas = new Entrada[NUMERO_MAXIMO_ENTRADAS];
	entradas = new ArrayList<>();
    }
    
    public void nuevaEntrada(Entrada entrada) {
//	entradas[posicionLibre++] = entrada;
	entradas.add(entrada);
    }
    
    
    public void nuevaPersona(String nombre, String apellidos, String nif) {
	nuevaEntrada(new Persona(nombre, apellidos, nif));
    }
    
    public void nuevaEmpresa(String nombre, String nif) {
	nuevaEntrada(new Empresa(nombre, nif));
    }
    
    public Entrada buscaEntradaPorNombre(String nombre) throws EntradaNoEncontrada {
//	for(int i = 0; i < posicionLibre; i++) {
//	    if(entradas[i].getNombre().equals(nombre))
//		return entradas[i];
//	}
//	return Persona.NULL;
	for(Entrada entrada: entradas)
	    if(entrada.getNombre().equals(nombre))
		return entrada;
	throw new EntradaNoEncontrada();
    }
    
    public int getNumeroEntradas() {
//	return posicionLibre;
	return entradas.size();
    }
    
    public Entrada getEntradaEnPosicion(int posicion) throws PosicionEnAgendaNoValida {
//	if(posicion >= 0 && posicion < posicionLibre)
//	    return entradas[posicion];
//	if(posicion >= 0 && posicion < entradas.size())
//	    return entradas.get(posicion);
//	throw new  PosicionEnAgendaNoValida();
	compruebaPosicionValida(posicion);
	return entradas.get(posicion);
//	else return Persona.NULL;
    }

    private void compruebaPosicionValida(int posicion)
	    throws PosicionEnAgendaNoValida {
	if(posicion < 0 || posicion >= entradas.size())
	    throw new PosicionEnAgendaNoValida();
    }

}
